/*
 *  MarchovicConcreteNoteGenerator.h
 *  SoundController0002
 *
 *  Created by jiro on 11/10/10.
 *  Copyright 2011 jiro music. All rights reserved.
 *
 */

#pragma once

#include "../HarmonicSystem/HarmonicSystem.h"
//#include "ConcreteNoteGenerator.h"
#include "ConcreteNote.h"
#include "StochasticConcreteNote.h"

namespace sc
{
namespace system0039
{
	class ConcreteNote;
	class StochasticConcreteNote;

	class MarchovicConcreteNoteGenerator : public ConcreteNoteGenerator
	{
	private:

		std::map< ConcreteNote, StochasticConcreteNote > noteMap; 

		mutable ConcreteNote currentNote;

	public:

		MarchovicConcreteNoteGenerator( double density, double duration );

		void AddChain( const ConcreteNote& sourceNote, const StochasticConcreteNote& destinationNote );

		ConcreteNote GetConcreteNote() const;

		std::string ToString( int tabCount = 0 ) const;
	};

}
}
